//
//  YZFMDB.m
//  YZZX
//
//  Created by Easaa on 15/5/9.
//  Copyright (c) 2015年 Easaa. All rights reserved.
//

#import "YZFMDB.h"

@implementation YZFMDB


//获得存放数据库文件的沙盒地址。
+(NSString *)databaseFilePath
{
    
    NSArray *filePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentPath = [filePath objectAtIndex:0];
    NSLog(@"%@",filePath);
    NSString *dbFilePath = [documentPath stringByAppendingPathComponent:@"db.sqlite"];
    
   NSLog(@"%@",dbFilePath);
    
    return dbFilePath;
    
}

//3、创建数据库的操作
+(FMDatabase *)creatDatabase
{
   FMDatabase * db = [FMDatabase databaseWithPath:[self databaseFilePath]];
    
    NSLog(@"数据库查看 -》》》》》》》》》》》%@",db);
    
    
    return db;
}

//创建表

+(FMDatabase *)creatTable
{
    //先判断数据库是否存在，如果不存在，创建数据库
//    if (!db) {
//        [self creatDatabase];
//    }
    
    FMDatabase *db = [self creatDatabase];
    
    
    //判断数据库是否已经打开，如果没有打开，提示失败
    if (![db open]) {
        NSLog(@"数据库打开失败");
        return nil;
    }
    
    //为数据库设置缓存，提高查询效率
    [db setShouldCacheStatements:YES];
    
    //判断数据库中是否已经存在这个表，如果不存在则创建该表
    if(![db tableExists:@"MassgeWebView"])
    {
        [db executeUpdate:@"CREATE TABLE MassgeWebView(MassgeID TEXT, MassgeData TEXT, MassgeTitle TEXT,MassgeTime TEXT) "];
        
        
        NSLog(@"创建完成");
    }
    
    return db;
}


//增加表数据+web内容
+(void)insertMassge:(NSString *)MassgeID Data:(NSString *)MassgeData Title:(NSString *)MassgeTitle Time:(NSString *)MassgeTime;
{
//    if (!db) {
//        [self creatDatabase];
//    }
//    
//    if (![db open]) {
//        NSLog(@"数据库打开失败");
//        return;
//    }
//    
//    [db setShouldCacheStatements:YES];
//    
//    if(![db tableExists:@"MassgeWebView"])
//    {
//        [self creatTable];
//    }

    FMDatabase *db= [self creatTable];

    //以上操作与创建表是做的判断逻辑相同
    //现在表中查询有没有相同的元素，如果有，做修改操作
    FMResultSet *rs = [db executeQuery:@"select * from MassgeWebView where MassgeID = ?",[NSString stringWithFormat:@"%@",MassgeID]];
    if([rs next])
    {
//        NSLog(@"dddddslsdkien");
//        [db executeUpdate:@"update MassgeWebView set name = ?, age = ? where people_id = 1",People,[NSString stringWithFormat:@"%d",People]];
        
        
    }
    //向数据库中插入一条数据
    else{
        [db executeUpdate:@"INSERT INTO MassgeWebView (MassgeID, MassgeData, MassgeTitle,MassgeTime) VALUES (?,?,?,?)",MassgeID,MassgeData,MassgeTitle,MassgeTime];
        

    } 
    
    
   
    
}



//查询+获取数据web内容
+(NSMutableArray *)getAllPeople:(NSString *)MassgeID
{
//    
//    if (!db) {
//        [self creatDatabase];
//    }
//    
//    if (![db open]) {
//        NSLog(@"数据库打开失败");
//        return nil;
//    }
//    
//    [db setShouldCacheStatements:YES];
//    
//    if(![db tableExists:@"MassgeWebView"])
//    {
//        return nil;
//    }
    
    
     FMDatabase *db= [self creatTable];
    if(![db tableExists:@"MassgeWebView"])
    {
        return nil;
    }

    
    //定义一个可变数组，用来存放查询的结果，返回给调用者
    NSMutableArray *MassgeWebViewArray = [[NSMutableArray alloc] initWithArray:0];
    //定义一个结果集，存放查询的数据
//    FMResultSet *rs = [db executeQuery:@"select * from MassgeWebView"];
    
    FMResultSet *rs = [db executeQuery:@"select * from MassgeWebView where MassgeID = ?",[NSString stringWithFormat:@"%@",MassgeID]];
    //判断结果集中是否有数据，如果有则取出数据
    while ([rs next]) {
        
        NSMutableDictionary  *dic = [[NSMutableDictionary alloc]init];
        
        [dic setObject:[rs stringForColumn:@"MassgeID"]            forKey:@"id"];
        [dic setObject:[rs stringForColumn:@"MassgeData"]       forKey:@"Content"];
        [dic setObject:[rs stringForColumn:@"MassgeTitle"]         forKey:@"Title"];
        [dic setObject:[rs stringForColumn:@"MassgeTime"]   forKey:@"ReleaseDate"];

            [MassgeWebViewArray addObject:dic];
        
    }
    
    if(MassgeWebViewArray.count>0)
    {
        return MassgeWebViewArray;
        
    }else if (MassgeWebViewArray.count<=0)
    {
        return nil;
    }

    return nil;
}



//删除数据
+(void)deletePeopleByID:(int)ID fdb:(FMDatabase *)db
{
    if (!db) {
        [self creatDatabase];
    }
    
    if (![db open]) {
        NSLog(@"数据库打开失败");
        return;
    }
    
    [db setShouldCacheStatements:YES];
    
    //判断表中是否有指定的数据， 如果没有则无删除的必要，直接return
    if(![db tableExists:@"MassgeWebView"])
    {
        return;
    }
    //删除操作
    [db executeUpdate:@"delete from MassgeWebView where MassgeID = ?", [NSString stringWithFormat:@"%d",ID]];
    
    [db close];
}





/*******************************多线程使用FMDB********************************/


//创建FMDatabaseQueue的方法

+ (FMDatabaseQueue *)openDb:(NSString *)dbname{
    //取得数据库保存路径，通常保存沙盒Documents目录
    NSString *directory=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    NSLog(@"%@",directory);
    NSString *filePath=[directory stringByAppendingPathComponent:dbname];
    //创建FMDatabaseQueue对象
  FMDatabaseQueue *  database=[FMDatabaseQueue databaseQueueWithPath:filePath];
    return database;
}





-(void)executeNonQuery:(NSString *)sql Fmdbqueue:(FMDatabaseQueue *)database{
    //执行更新sql语句，用于插入、修改、删除
    [database inDatabase:^(FMDatabase *db) {
        [db executeQuery:sql];
    }];
}

-(NSArray *)executeQuery:(NSString *)sql Fmdbqueue:(FMDatabaseQueue *)database{
    NSMutableArray *array=[NSMutableArray array];
    [database inDatabase:^(FMDatabase *db) {
        //执行查询sql语句
        FMResultSet *result= [db executeQuery:sql];
        while (result.next) {
            NSMutableDictionary *dic=[NSMutableDictionary dictionary];
            for (int i=0; i<result.columnCount; ++i) {
                dic[[result columnNameForIndex:i]]=[result stringForColumnIndex:i];
            }
            [array addObject:dic];
        }
    }];
    return array;
}


@end
